#include <stdio.h>
#include <ctype.h>

#define MAX_DIGITS 10

int segments[10][7] = {{1, 1, 1, 1, 1, 1, 0},
                       {0, 1, 1, 0, 0, 0, 0},
                       {1, 1, 0, 1, 1, 0, 1},
                       {1, 1, 1, 1, 0, 0, 1},
                       {0, 1, 1, 0, 0, 1, 1},
                       {1, 0, 1, 1, 0, 1, 1},
                       {1, 0, 1, 1, 1, 1, 1},
                       {1, 1, 1, 0, 0, 0, 0},
                       {1, 1, 1, 1, 1, 1, 1},
                       {1, 1, 1, 1, 0, 1, 1}};

char digits[3][MAX_DIGITS * 4];

void clear_digits_array(void);
void process_digit(int, int);
void print_digits_array(void);

int main(void)
{
    int index = 0;
    char ch;

    clear_digits_array();

    printf("Enter a number: ");
    while ((ch = getchar()) != '\n')
    {
        if (isdigit(ch))
        {
            process_digit(ch - '0', index++);
            if (index >= 10)
            {
                break;
            }
        }
    }

    print_digits_array();

    return 0;
}

void clear_digits_array(void)
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < MAX_DIGITS * 4; j++)
        {
            digits[i][j] = ' ';
        }
    }
}

void process_digit(int digit, int position)
{
    int map[][2] = {
        {0, 1},
        {1, 2},
        {2, 2},
        {2, 1},
        {2, 0},
        {1, 0},
        {1, 1},
    };

    for (int i = 0; i < 7; i++)
    {
        if (segments[digit][i])
        {
            digits[map[i][0]][position * 4 + map[i][1]] = i % 3 ? '|' : '_';
        }
    }
}

void print_digits_array(void)
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < MAX_DIGITS * 4; j++)
        {
            putchar(digits[i][j]);
        }
        putchar('\n');
    }
}